from fastapi import FastAPI
from fastapi.responses import StreamingResponse
import time

app = FastAPI()

# 模拟生成流式数据的生成器函数
def generate_streaming_text():
    lines = [
        "🟢 [INFO] 服务已启动...",
        "🔵 [事件] 用户登录系统",
        "🟡 [警告] 检测到内存使用率过高",
        "🔴 [错误] 数据库连接失败",
        "🟢 [INFO] 正在重试连接...",
        "🟢 [INFO] 数据库连接已恢复！",
        "✅ [完成] 流式数据发送完毕。",
    ]

    for line in lines:
        time.sleep(1)  # 模拟延迟，比如从慢速 IO 读取数据
        yield f"{line}\n"  # 每次 yield 一行文本

# 定义一个流式接口
@app.get("/stream")
async def stream_endpoint():
    """
    流式 API 示例：客户端将逐步接收到文本数据，每秒一行。
    """
    return StreamingResponse(
        generate_streaming_text(),  # 使用生成器逐步产生数据
        media_type="text/plain",   # 媒体类型为纯文本
        headers={"Cache-Control": "no-cache"}  # 避免缓存，确保实时性
    )

# 可选：首页提示
@app.get("/")
async def home():
    return {"message": "欢迎使用 FastAPI 流式 API 示例！请访问 /stream 查看流式文本输出。"}